package com.itheima.filter;

import jakarta.servlet.*;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 * filter快速入门
 */
@Slf4j
// @WebFilter("/*") // 设置拦截路径，/* 为拦截所有请求
public class DemoFilter implements Filter {

    // 初始化，Web服务器启动时执行，只会执行一次
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("初始化。。。");
    }

    // 拦截请求，每次请求被处理前执行，每拦截一次请求，方法执行一次
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        log.info("放行前执行逻辑。。。");
        // 放行，放行后，请求会继续被后续过滤器处理，如果没有后续过滤器，则请求会直接被目标资源处理
        filterChain.doFilter(servletRequest, servletResponse);
        log.info("放行后执行逻辑。。。");
    }

    // 销毁，Web服务器关闭时执行，只会执行一次
    @Override
    public void destroy() {
        log.info("销毁...");
    }
}
